package app.beans;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Inject;

import app.entidad.Cuenta;
import app.entidad.TipoDeCuenta;
import app.negocio.CuentaDAO;
import app.negocio.TipoDeCuentaDAO;

@ManagedBean
@ViewScoped
public class CuentaBean {
	
	@Inject
	CuentaDAO cDAO, cuentaDAO;
	
	@Inject
	TipoDeCuentaDAO tipoDeCuentaDAO;
	
	private Cuenta newCuenta, cta;
	private List<Cuenta> listado;
	private List<TipoDeCuenta> listaC;
	
	
	public List<TipoDeCuenta> getListaC() {
		return listaC;
	}

	public void setListaC(List<TipoDeCuenta> listaH) {
		this.listaC = listaC;
	}
	
	
	public void loadCuentas(){
		listado= cDAO.getCuenta();
	}
	
	public List<Cuenta> getListado() {
		return listado;
	}
	
	

	public void setListado(List<Cuenta> listado) {
		this.listado = listado;
	}

	public CuentaBean(){
		newCuenta = new Cuenta();
	}
	
	public Cuenta getNewCuenta() {
		return newCuenta;
	}
	public void setNewCuenta(Cuenta newCuenta) {
		this.newCuenta = newCuenta;
	}
	
	//Actcion Controller
	public String guardar(){
		
		
		System.out.println("Guardando Datos de: "  + newCuenta.getNumero());
		
		cDAO.insert(newCuenta);
		
		loadCuentas();
		return "listado-cuentas";
	}
	
	
	
	
	public String buscar(){
		
		loadCuentas();
		
		return null;
	}
	
	public Converter getConverter() {
		return new Converter() {
			@Override
			public Object getAsObject(FacesContext context, UIComponent component,
					String value) {
				// TODO Auto-generated method stub
				return tipoDeCuentaDAO.findById(Long.valueOf(value));
			}
			@Override
			public String getAsString(FacesContext context, UIComponent component,
					Object value) {
				if (value==null){
				return "";
				}
				return String.valueOf(((Cuenta) value).getId());
						
			}
		};
	}
	
	public String eliminar() {
		
		buscar();
		System.out.println("ELIMINAR");
		System.out.println("numero de cuenta"+cta.getNumero());
		System.out.println("descripcion"+cta.getDescripcion());
	
		
		//personaDAO.remove(per);

	    cuentaDAO.delete(cta);
		//personaDAO.update(per);
		return "index.xhtml?faces-redirect=true";
	}
}